# flask有多少种返回数据的方式?
#   1.  直接返回字符串,默认返回的是text/html类型

#   2.  通过 make_response 进行返回
#     引入make_response
#     response = make_response("<h1>Custom Response</h1>") #代表返回的内容
#     response.headers["Content-Type"] = "text/plain" #代表返回的内容的类型
#     response.status_code = 200 #代表返回的内容的状态
#     return response

#   3. 通过Response进行返回
#         引入Response
#         return Response(
#             返回内容,
#             mimetype='application/json',
#             headers={'Content-Type': 'application/json; charset=utf-8'}
#         )

#   4. 通过 jsonify 返回json字符串
#       return jsonify(python字典)

#   5. 通过 render_template 返回html页面
#       return render_template("index.html")


#3. 使用Json进行响应

import json
from flask import Flask, render_template,make_response,Response,jsonify
app = Flask(__name__)

#首页路由
@app.route('/')
def index():
    return render_template("index.html",name="锤子科技")

#测试页面
@app.route('/userinfo')
def userinfo():
    data = {
        "name": "张三",
        "age": 30,
        "is_student": False,
        "courses": ["数学", "英语"],
        "address": {
            "city": "北京",
            "street": "长安街"
        }
    }

    # res = json.dumps(data, ensure_ascii=False)

    # response = make_response(res)
    # response.headers["Content-Type"] = "application/json"
    # return response

    # return Response(
    #     res,
    #     mimetype='application/json',
    #     headers={'Content-Type': 'application/json'}
    # )

    return jsonify(data)  # 自动设置Content-Type为application/json


if __name__ == '__main__':
    app.run(debug=True)